home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / midi / midifl12.lha / midifile.new / midifile.h < prev    next >
C/C++ Source or Header  |  1995-08-27  |  4KB  |  129 lines

  1.  
  2. #include <stdio.h>
  3.  
  4. extern int (*Mf_getc)(void);
  5. extern int (*Mf_header)(int,int,int);
  6. extern int (*Mf_trackstart)(void);
  7. extern int (*Mf_trackend)(void);
  8. extern int (*Mf_noteon)(int,int,int);
  9. extern int (*Mf_noteoff)(int,int,int);
  10. extern int (*Mf_pressure)(int,int,int);
  11. extern int (*Mf_parameter)(int,int,int);
  12. extern int (*Mf_pitchbend)(int,int,int);
  13. extern int (*Mf_program)(int,int);
  14. extern int (*Mf_chanpressure)(int,int);
  15. extern int (*Mf_sysex)(int,char*);
  16. extern int (*Mf_metamisc)(int,int,char *);
  17. extern int (*Mf_seqspecific)(int,int,char *);
  18. extern int (*Mf_seqnum)(int);
  19. extern int (*Mf_text)(int,int,char *);
  20. extern int (*Mf_eot)(void);
  21. extern int (*Mf_timesig)(int,int,int,int);
  22. extern int (*Mf_smpte)(int,int,int,int,int);
  23. extern int (*Mf_tempo)(long);
  24. extern int (*Mf_keysig)(int,int);
  25. extern int (*Mf_arbitrary)(int,int);
  26. extern int (*Mf_error)(char *);
  27. extern unsigned long Mf_currtime;
  28. extern unsigned long Mf_realtime;
  29. extern unsigned long Mf_currtempo;
  30. extern int Mf_division;
  31. extern int Mf_nomerge;
  32.  
  33. /* definitions for MIDI file writing code */
  34. extern int (*Mf_putc)(char);
  35. extern int (*Mf_writetrack)(int);
  36. extern int (*Mf_writetempotrack)(void);
  37.  
  38. extern void midifile(void);
  39. extern unsigned long mf_sec2ticks(double,int,unsigned long);
  40. extern void mfwrite(int,int,int,FILE *);
  41. extern int mf_write_meta_event(unsigned long,unsigned char,unsigned char *,unsigned long);
  42. extern int mf_write_midi_event(unsigned long delta_time, int type,
  43.     int chan, char *data, unsigned long size);
  44. extern double mf_ticks2sec(unsigned long ticks,int division,unsigned long tempo);
  45. extern void mf_write_tempo();
  46. extern void mf_write_seqnum();
  47. extern void mfread();
  48. extern void mferror(char *s);
  49.  
  50. #ifndef NO_LC_DEFINES
  51. /* MIDI status commands most significant bit is 1 */
  52. #define note_off             0x80
  53. #define note_on              0x90
  54. #define poly_aftertouch      0xa0
  55. #define control_change        0xb0
  56. #define program_chng         0xc0
  57. #define channel_aftertouch      0xd0
  58. #define pitch_wheel          0xe0
  59. #define system_exclusive          0xf0
  60. #define delay_packet         (1111)
  61.  
  62. /* 7 bit controllers */
  63. #define damper_pedal            0x40
  64. #define portamento            0x41     
  65. #define sostenuto            0x42
  66. #define soft_pedal            0x43
  67. #define general_4               0x44
  68. #define    hold_2                0x45
  69. #define    general_5            0x50
  70. #define    general_6            0x51
  71. #define general_7            0x52
  72. #define general_8            0x53
  73. #define tremolo_depth            0x5c
  74. #define ctrl_chorus_depth       0x5d
  75. #define    detune                0x5e
  76. #define phaser_depth            0x5f
  77.  
  78. /* parameter values */
  79. #define data_inc            0x60
  80. #define data_dec            0x61
  81.  
  82. /* parameter selection */
  83. #define non_reg_lsb            0x62
  84. #define non_reg_msb            0x63
  85. #define reg_lsb                0x64
  86. #define reg_msb                0x65
  87.  
  88. /* Standard MIDI Files meta event definitions */
  89. #define    meta_event        0xFF
  90. #define    sequence_number     0x00
  91. #define    text_event        0x01
  92. #define copyright_notice     0x02
  93. #define sequence_name        0x03
  94. #define instrument_name     0x04
  95. #define lyric                0x05
  96. #define marker            0x06
  97. #define    cue_point        0x07
  98. #define channel_prefix        0x20
  99. #define    end_of_track        0x2f
  100. #define    set_tempo        0x51
  101. #define    smpte_offset        0x54
  102. #define    time_signature        0x58
  103. #define    key_signature        0x59
  104. #define    sequencer_specific    0x74
  105.  
  106. /* Manufacturer's ID number */
  107. #define Seq_Circuits (0x01) /* Sequential Circuits Inc. */
  108. #define Big_Briar    (0x02) /* Big Briar Inc.           */
  109. #define Octave       (0x03) /* Octave/Plateau           */
  110. #define Moog         (0x04) /* Moog Music               */
  111. #define Passport     (0x05) /* Passport Designs         */
  112. #define Lexicon      (0x06) /* Lexicon             */
  113. #define Tempi        (0x20) /* Bon Tempi                */
  114. #define Siel         (0x21) /* S.I.E.L.                 */
  115. #define Kawai        (0x41) 
  116. #define Roland       (0x42)
  117. #define Korg         (0x42)
  118. #define Yamaha       (0x43)
  119. #endif
  120.  
  121. /* miscellaneous definitions */
  122. #define MThd 0x4d546864
  123. #define MTrk 0x4d54726b
  124.  
  125. #ifndef NO_LC_DEFINES
  126. #define lowerbyte(x) ((unsigned char)(x & 0xff))
  127. #define upperbyte(x) ((unsigned char)((x & 0xff00)>>8))
  128. #endif
  129.